#include<iostream>
#include<cstring>
#include<stack>
#include<cmath>
#include<string>
using namespace std;

struct node{
	char data;
	int base;
	node(char data = '+',int base = 0):data(data),base(base){
	}
};

stack<int> qn;
stack<node> qs;
int base = 0;
string s;

inline void calc(){
	int a = qn.top();qn.pop();
	if(qn.empty())	qn.push(0);
	int b = qn.top();qn.pop();
	switch(qs.top().data){
		case '+':{
			qn.push(b+a);
			break;
		}
		case '-':{
			qn.push(b-a);
			break;
		}
		case '*':{
			qn.push(b*a);
			break;
		}
		case '/':{
			qn.push(b/a);
			break;
		}
		case '^':{
			qn.push(pow(b,a));
			break;
		}
	}
	qs.pop();
}

int init(string ss){
	char tmp;
	for(int i=1;i<=qn.size();i++)qn.pop();
	for(int i=1;i<=qs.size();i++)qs.pop();
	for(int i=0;i<ss.length();i++){
		tmp=ss[i];
		if(tmp=='a'){
			int t=max(1,qn.top())*66;
			qn.pop();
			qn.push(t);
		}
		if(tmp >= '0' && tmp <= '9'){
			int num = tmp - '0';
			tmp = ss[++i];
			if(tmp=='a'){
				int t=qn.top()*66;
				qn.pop();
				qn.push(t);
				tmp = ss[++i];
			}
			while(tmp <= '9' && tmp >= '0'){
				num = num * 10 + tmp - '0';
			}
			qn.push(num);
		}
		switch(tmp){
			case '+':case '-':{
				while(!qs.empty() && qs.top().base >= 1+base){
					calc();
				}
				qs.push(node(tmp,1+base));
				break;
			}
			case '*':case '/':{
				while(!qs.empty() && qs.top().base >= 2+base){
					calc();
				}
				qs.push(node(tmp,2+base));
				break;
			}
			case '^':{
				while(!qs.empty() && qs.top().base > 3+base){
					calc();
				}
				qs.push(node(tmp,3+base));
				break;
			}
			case '(':{
				base += 4;
				break;
			}
			case ')':{
				base -= 4;
				break;
			}
		}
	}
	
	
	while(!qs.empty()){
		calc();
	}
	
	return qn.top();
}

int main(){
	getline(cin,s);
	int ans = init(s);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		getline(cin,s);
		
	}
	return 0;
}

